#include "cfixedframerate.h"
#include "stdafx.h"

CFixedFrameRate::CFixedFrameRate(int frameRate);
{
	m_frameRate=frameRate;
	QueryPerformanceCounter(&m_c0);
}
CFixedFrameRate::~CFixedFrameRate();
{
	// como no hemos hecho ningun new en el constructor, no reservamos memoria
	//por lo que no hay que hacer nada en el destructor
}

double CFixedFrameRate::getFrameLength();
{
	//devuelve cuanto tiene que durar un frame (imagenes por segundo)
	//No se hace el casting despues de la division
	return 1.0/(double)m_frameRate;
}
void CFixedFrameRate::endFrame();
{
	// numero de veces que se actualiza el contador por segundo
	__int64 c0,c1,c; 
	__int64 cps;
	double f;
	double cf;
	double dormir;
	QueryPerfomanceCounter(&c0);
	//dibujar imagen

	//llamar al contador de nuevo
	QueryPerformanceCounter(&c1);
	//numero de veces final que se ha actualizado el contador
	c=(double)c1-(double)c0;
	//cuantas veces se actualiza el contador por segundo
	QueryPreformanceFrecuency(&cps);
	//frecuencia -> cuanto dura una actualizacion
	f=1.0/(double)cps;
	//contador*frecuencia -> tiempo que tarda en actualizar una imagen
	cf=c*f;
	//tiempo a dormir
	dormir=frameRate-cf;
	//dormir
	sleep(dormir);
	//volver a llamar a queryperfomancefrequency para saber cuando ha acabado este frame
	//lo usas para cuando vuelva a llamar al end frame
	QueryPerfomanceCounter(&m_c0);

}
